package cn.wenhe9.yygh.hosp.service;

import cn.wenhe9.yygh.common.result.ResultResponse;
import cn.wenhe9.yygh.model.hosp.HospitalSet;
import cn.wenhe9.yygh.model.vo.hosp.HospitalSetQueryVo;
import cn.wenhe9.yygh.model.vo.order.SignInfoVo;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Map;

/**
 * @author DuJinliang
 * 2022/2/10
 */
public interface HospitalSetService extends IService<HospitalSet> {
    /**
     * 查询医院设置表所有信息
     * @return ResultResponse<List<HospitalSet>>
     */
    ResultResponse<List<HospitalSet>> findAllHospSet();

    /**
     * 逻辑删除医院设置
     * @return ResultResponse
     */
    ResultResponse removeHospSet(Long id);

    /**
     * 条件查询带分页
     * @param current 当前页
     * @param limit 每页条数
     * @param hospitalSetQueryVo 多条件视图实体
     * @return ResultResponse<Page<HospitalSet>>
     */
    ResultResponse<Page<HospitalSet>> findHospSetByPage(Integer current, Integer limit, HospitalSetQueryVo hospitalSetQueryVo);

    /**
     * 添加医院设置
     * @param hospitalSet 医院设置
     * @return ResultResponse
     */
    ResultResponse saveHospSet(HospitalSet hospitalSet);

    /**
     * 根据id获取医院设置
     * @param id 医院设置id
     * @return ResultResponse
     */
    ResultResponse getHospSetById(Long id);

    /**
     * 修改医院设置
     * @param hospitalSet 医院设置
     * @return ResultResponse
     */
    ResultResponse updateHospSetById(HospitalSet hospitalSet);

    /**
     * 批量删除医院设置
     * @param idList id集合
     * @return ResultResponse
     */
    ResultResponse batchRemoveHospSetById(List<Long> idList);

    /**
     * 医院设置和解锁
     * @param id 医院设置id
     * @param status 医院状态
     * @return ResultResponse
     */
    ResultResponse lockHospSetById(Long id, Integer status);

    /**
     * 发送秘钥
     * @param id 医院设置id
     * @return ResultResponse
     */
    ResultResponse sendKey(Long id);

    /**
     * 拿取数据库中的对应hoscode的signKey
     * @param hoscode 医院id
     * @return signkey
     */
    String getSignKey(String hoscode);

    /**
     * 检查签名是否合法
     * @param paramMap Map<String, Object>
     */
    void checkSignKey(Map<String, Object> paramMap);

    /**
     * 获取医院签名信息
     * @param hoscode String
     * @return SignInfoVo
     */
    SignInfoVo getSignInfo(String hoscode);
}
